import { Module } from '@nestjs/common';
import { ConfigModule as NestConfigModule } from '@nestjs/config';
import * as Joi from 'joi';
// 环境变量配置地址
const envFilePath = [`.env.${process.env.NODE_ENV || `development`}`, '.env'];
// 配置验证规则
const schema = Joi.object({
  NODE_ENV: Joi.string()
    .valid('development', 'production', 'test')
    .default('development'),
  PORT: Joi.number().default(3000),
  DB_HOST: Joi.string().ip(),
});
// ConfigModule 负责加载和提供配置功能
//onfigService 负责从配置中获取具体的配置信息
@Module({
  imports: [
    // forRoot方法读取.env文件，并验证其内容是否满足schema定义的规则
    NestConfigModule.forRoot({
      // isGlobal: true，表示该模块是全局的，可以在整个应用程序中使用
      isGlobal: true,
      // validationSchema: 验证规则
      validationSchema: schema,
      // envFilePath: 环境变量文件路径
      envFilePath,
    }),
    ConfigModule,
  ],
})
export class ConfigModule {}
